#pragma once
#include "ui_serialassist.h"
#include <QMainWindow>

#include <QSerialPort>
#include <QSerialPortInfo>
#include <QComboBox>
#include <QDebug>
#include <QMessageBox>
#include <QTimer>

class serialassist : public QMainWindow {
    Q_OBJECT
    
public:
    serialassist(QWidget* parent = nullptr);
    ~serialassist();


private slots:
    // 按键槽函数
    void on_btnScanPort_clicked(); // 扫描串口按键
    void on_btnOpenPort_clicked(); // 打开串口按键
    void on_btnSend_clicked();     // 发送串口按键
    void on_btnClearRev_clicked(); // 清除接收按键
    void on_btnClearSend_clicked(); // 清除发送按键
    void on_btnResetCnt_clicked(); // 复位计数按键

    void on_chkPriecSend_stateChanged(int arg1); // 周期发送复选框

    void readData(); // 接收数据槽函数
    void handleError(QSerialPort::SerialPortError error); // 串口异常处理

private:
    int sendByteCnt = 0,revByteCnt = 0;
    QSerialPort *serialPort; // 串口对象
    void initPortConfig(); // 初始化串口配置
    void scanPorts(); // 扫描串口
    void setControlsEnabled(bool enabled); // 使能控制

private:
    QTimer *priecSendTimer;
    Ui_serialassist* ui;
    QSerialPort::StopBits to_convert_stopbit(QString bit);
    QSerialPort::DataBits to_convert_databit(QString  bit);
    QSerialPort::Parity to_convert_paritybit(QString  bit);
};